#ifndef FILTERMASK_H
#define FILTERMASK_H

#include "MemoryHelper.h"

const int PredefinedMaskSize = 3;

enum FilterType
{
    Filter_Mean,
    Filter_Weighted,
    Filter_PointSharpening,
    Filter_PointDetection,
    Filter_VerticalLineSharpening,
    Filter_HorizontalLineSharpening,
    Filter_LeftDiagonalLineSharpening,
    Filter_RightDiagonalLineSharpening,
    Filter_VerticalLineDetection,
    Filter_HorizontalLineDetection,
    Filter_LeftDiagonalLineDetection,
    Filter_RightDiagonalLineDetection,
    Filter_UserDefined,
    NumberOfFilters
};

enum PostProcessingType
{
    PostProcessing_CutOff,
    PostProcessing_Normalization,
    PostProcessing_None
};

class FilterMask
{
public:
    float** Mask;
    int Width;
    int Height;
    PostProcessingType PostProcessing;

    FilterMask(int width, int height, PostProcessingType postProcessing = PostProcessing_None);
    ~FilterMask();
    static FilterMask* From(float mask[][PredefinedMaskSize], int width, int height, PostProcessingType postProcessing = PostProcessing_None);
};

#endif // FILTERMASK_H

